﻿/*
	File: CCamera.h

	Leírás: Az ICamera interface-t megvalósító osztály. Egy kamera típusó objektumot képvisel.
  Még DX függetleníteni kell. Az igazi plusz funkció a CObjecthez képest az update fv-e.

	Szerzõ: SevN

*/


#ifndef __CCAMERA_H__
#define __CCAMERA_H__
#include "..\Includes\ICamera.h"
#include "CObject.h"
#include "..\Util\Utilities.h"

namespace Content
{
class CCamera : public ICamera
{
public:
	CCamera();
	virtual ~CCamera();
  
  // kamera eltolása nézeti irányban adott értékkel
	void moveForward(float f);

	// kamera eltolása oldal irányban adott értékkel	
	void strafe(float f);

  // kamera állapotfrissítése, view mátrixának ujraszámolása
  void update();

  // viev matrix lekérése
  D3DXMATRIX const* CCamera::getViewMatrix();

  virtual void setLookAtPoint(const float x, const float y, const float z);


	// áteresztő fv. a kamera objektumához
  virtual void setPos(const float x, const float y,const float z);

	// áteresztő fv. a kamera objektumához
  virtual void getPos(float& x, float& y, float& z);

	// áteresztő fv. a kamera objektumához
	virtual void moveVec(const float x, const float y, const float z);

	// áteresztő fv. a kamera objektumához
  virtual void getOrientation(float& yaw, float& pitch, float& roll); 

	// áteresztő fv. a kamera objektumához
	virtual void yaw(const float f);

	// áteresztő fv. a kamera objektumához
	virtual void pitch(const float f);

	// áteresztő fv. a kamera objektumához
	virtual void roll(const float f);

	// áteresztő fv. a kamera objektumához
	virtual void setYaw(const float f);

	// áteresztő fv. a kamera objektumához
	virtual float getYaw();

	// áteresztő fv. a kamera objektumához
	virtual void setPitch(const float f);

	// áteresztő fv. a kamera objektumához
	virtual float getPitch();

	// áteresztő fv. a kamera objektumához
	virtual void setRoll(const float f);

	// áteresztő fv. a kamera objektumához
	virtual float getRoll();
  virtual void setVisible(const bool b){}
  virtual bool isVisible(){return true;}  

private:

  // kamera objektuma
  CObject* pCamObj;
  D3DXVECTOR3 vecLook,vecUp,vecRight, lookAtPt;
	// nézetmátrix
	D3DXMATRIX matView;
};
}

#endif